Skip to content

Conversation

@HyprUsr
Copy link

@HyprUsr HyprUsr commented Oct 8, 2025

This PR introduces a new optional callback, onConnectionClosed, on the Db class. This function is invoked when the underlying MongoDB connection's socket closes, specifically when the socket stream reports either an onError (e.g., network timeout, connection reset) or completes via onDone.

While the ideal long-term solution involves implementing a robust, internal auto-retry and command queue management system, this approach proves highly complex and time-consuming.

Rationale and Usage
This new callback provides an immediate, practical mechanism for client applications to handle unexpected connection loss gracefully:

Application Restart: The most common use case will be allowing application-level logic to trigger a full connection restart or application exit upon a fatal connection error.

State Management: It allows developers to reliably update application state when the connection status changes from active to closed.

By exposing this connection event, we empower library consumers to manage their own reconnection strategy and error handling without requiring complex changes within mongo_dart's core socket logic.

Example (Conceptual)

    final db = await Db.create(connectionString);
    await db.open(onConnectionClosed: () {
        print('Connection is closed, so let's restart the app');
    });
    await db.pingCommand();
    return db;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant